<?php
/**
 * @author Mr.UBKey
 * @package XPHP
 * @version Beta
 * @copyright XWEB
 */
class XPHP_Layout
{
	/**
	 * Router lưu thông tin về area, controller, action
	 * @var XPHP_Router
	 */
	protected $_router; 
	
	/**
	 * Tên thư mục chứa view
	 * @var string
	 */
	protected $_layoutDir = "layouts";
	
	/**
	 * Phần đuôi mở rộng của View
	 */
	protected $_layoutExt = "phtml";
	
	/**
	 * File layout
	 * @var string
	 */
	protected $_layoutFile = "";
	
	/**
	 * View
	 * @var XPHP_View
	 */
	protected $_view;
	
	/**
	 * Lớp khởi tạo View
	 * @param XPHP_Router $router
	 * @param XPHP_Layout $layout Tên layout
	 */
	public function __construct(XPHP_Router $router, XPHP_View $view)
	{
		$this->_router = $router; // Gán Router
		$this->_view = $view;
	}
	
	public function setLayoutFile($layoutFile)
	{
		$this->_layoutFile = $layoutFile;
	}
	
	public function getLayoutFile()
	{
		return $this->_layoutFile;
	}
	
	/**
	 * Lấy ra đường dẫn đến file layout
	 */
	public function getLayoutPath()
	{
		$area = $this->_router->getArea();
		if(empty($area))
		{
			$path = $this->_router->getApplicationDir() . '/' 
					. $this->_layoutDir . '/'
					. $this->_layoutFile . '.' . $this->_layoutExt;
			//Xử lý trả về kết quả
			if(is_file($path))
				return $path;
			else 
			{
				require_once 'XPHP/Exception.php';
				throw new XPHP_Exception("Không tìm thấy tệp tin Layout $path được load trong " 
										 . $this->_router->getController() . $this->_router->getControllerKey());
			}
		}
		else
		{
			$path = $this->_router->getAreaPaths($area) . '/' 
					. $this->_layoutDir . '/'
					. $this->_layoutFile . '.' . $this->_layoutExt;
			//Xử lý trả về kết quả
			if(is_file($path))
				return $path;
			else 
			{
				require_once 'XPHP/Exception.php';
				throw new XPHP_Exception("Không tìm thấy tệp tin Layout $path được load trong " 
										 . $this->_router->getArea() . "_" . $this->_router->getController() . $this->_router->getControllerKey());
			}
		}
	}
}
